package frsf.cidisi.exercise.arql.situationCalculus.actions;

import java.util.ArrayList;
import frsf.cidisi.exercise.arql.situationCalculus.EstadoIsla;
import frsf.cidisi.faia.agent.situationcalculus.SituationCalculusAction;
import frsf.cidisi.faia.state.AgentState;
import frsf.cidisi.faia.state.EnvironmentState;

public class IrACabe extends SituationCalculusAction {

/**This method updates the environment state*/
	public EnvironmentState execute(AgentState ast, EnvironmentState est) {
    	
    	EstadoIsla environmentState = (EstadoIsla) est;
		
		ArrayList<String> ciudadesAdyacentes = new ArrayList<String>();
		ciudadesAdyacentes.addAll(environmentState.getCiudadesAdyacentesArq());

		if (ciudadesAdyacentes != null) {
			int index = ciudadesAdyacentes.indexOf(EstadoIsla.Ca);
			if (index >= 0) { /*si es adyacente*/
				/** actualizamos el estado del mundo real */
				environmentState.setposicionArqueologo(EstadoIsla.Ca);
				return environmentState;
			}
		}
		/*
		 * no hay ciudades adyacentes, o Cabe no es una de las ciudades
		 * adyacentes
		 */
		return null;
    }


    @Override
    public String toString() {
        return "irACabe";
    }
}

